home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / xlisp_21.zoo / xlftab.c < prev    next >
C/C++ Source or Header  |  1990-02-28  |  17KB  |  460 lines

  1. /* xlftab.c - xlisp function table */
  2. /*    Copyright (c) 1985, by David Michael Betz
  3.     All Rights Reserved
  4.     Permission is granted for unrestricted non-commercial use    */
  5.  
  6. #include "xlisp.h"
  7.  
  8. /* external functions */
  9. extern LVAL
  10.     xbisubr(),xbifsubr(),
  11.     rmhash(),rmquote(),rmdquote(),rmbquote(),rmcomma(),
  12.     clnew(),clisnew(),clanswer(),
  13.     obisnew(),obclass(),obshow(),
  14.     rmlpar(),rmrpar(),rmsemi(),
  15.     xeval(),xapply(),xfuncall(),xquote(),xfunction(),xbquote(),
  16.     xlambda(),xset(),xsetq(),xsetf(),xdefun(),xdefmacro(),
  17.     xgensym(),xmakesymbol(),xintern(),
  18.     xsymname(),xsymvalue(),xsymplist(),
  19.     xget(),xputprop(),xremprop(),
  20.     xhash(),xmkarray(),xaref(),
  21.     xcar(),xcdr(),
  22.     xcaar(),xcadr(),xcdar(),xcddr(),
  23.     xcaaar(),xcaadr(),xcadar(),xcaddr(),
  24.     xcdaar(),xcdadr(),xcddar(),xcdddr(),
  25.     xcaaaar(),xcaaadr(),xcaadar(),xcaaddr(),
  26.     xcadaar(),xcadadr(),xcaddar(),xcadddr(),
  27.     xcdaaar(),xcdaadr(),xcdadar(),xcdaddr(),
  28.     xcddaar(),xcddadr(),xcdddar(),xcddddr(),
  29.     xcons(),xlist(),xappend(),xreverse(),xlast(),xnth(),xnthcdr(),
  30.     xmember(),xassoc(),xsubst(),xsublis(),xlength(),xsort(),
  31.     xremove(),xremif(),xremifnot(),
  32.     xmapc(),xmapcar(),xmapl(),xmaplist(),
  33.     xrplca(),xrplcd(),xnconc(),
  34.     xdelete(),xdelif(),xdelifnot(),
  35.     xatom(),xsymbolp(),xnumberp(),xboundp(),xnull(),xlistp(),xendp(),xconsp(),
  36.     xeq(),xeql(),xequal(),
  37.     xcond(),xcase(),xand(),xor(),xlet(),xletstar(),xif(),
  38.     xprog(),xprogstar(),xprog1(),xprog2(),xprogn(),xgo(),xreturn(),
  39.     xcatch(),xthrow(),
  40.     xerror(),xcerror(),xbreak(),
  41.     xcleanup(),xtoplevel(),xcontinue(),xerrset(),
  42.     xbaktrace(),xevalhook(),
  43.     xdo(),xdostar(),xdolist(),xdotimes(),
  44.     xminusp(),xzerop(),xplusp(),xevenp(),xoddp(),
  45.     xfix(),xfloat(),
  46.     xgcd(),xadd(),xsub(),xmul(),xdiv(),xrem(),xmin(),xmax(),xabs(),
  47.     xadd1(),xsub1(),xlogand(),xlogior(),xlogxor(),xlognot(),
  48.     xsin(),xcos(),xtan(),xexpt(),xexp(),xsqrt(),xrand(),
  49.     xlss(),xleq(),xequ(),xneq(),xgeq(),xgtr(),
  50.     xstrcat(),xsubseq(),xstring(),xchar(),
  51.     xread(),xprint(),xprin1(),xprinc(),xterpri(),
  52.     xflatsize(),xflatc(),
  53.     xopen(),xclose(),xrdchar(),xpkchar(),xwrchar(),xreadline(),
  54.     xload(),xtranscript(),
  55.     xtype(),xexit(),xpeek(),xpoke(),xaddrs(),
  56.     xvector(),xblock(),xrtnfrom(),xtagbody(),
  57.     xpsetq(),xflet(),xlabels(),xmacrolet(),xunwindprotect(),xpp(),
  58.     xstrlss(),xstrleq(),xstreql(),xstrneq(),xstrgeq(),xstrgtr(),
  59.     xstrilss(),xstrileq(),xstrieql(),xstrineq(),xstrigeq(),xstrigtr(),
  60.     xupcase(),xdowncase(),xnupcase(),xndowncase(),
  61.     xtrim(),xlefttrim(),xrighttrim(),
  62.     xuppercasep(),xlowercasep(),xbothcasep(),xdigitp(),xalphanumericp(),
  63.     xcharcode(),xcodechar(),xchupcase(),xchdowncase(),xdigitchar(),
  64.     xchrlss(),xchrleq(),xchreql(),xchrneq(),xchrgeq(),xchrgtr(),
  65.     xchrilss(),xchrileq(),xchrieql(),xchrineq(),xchrigeq(),xchrigtr(),
  66.     xintegerp(),xfloatp(),xstringp(),xarrayp(),xstreamp(),xobjectp(),
  67.     xwhen(),xunless(),xloop(),
  68.     xsymfunction(),xfboundp(),xsend(),xsendsuper(),
  69.     xprogv(),xrdbyte(),xwrbyte(),xformat(),
  70.     xcharp(),xcharint(),xintchar(),
  71.     xmkstrinput(),xmkstroutput(),xgetstroutput(),xgetlstoutput(),
  72.     xgetlambda(),xmacroexpand(),x1macroexpand(),
  73.     xtrace(),xuntrace(),
  74.     xdefstruct(),xmkstruct(),xcpystruct(),xstrref(),xstrset(),xstrtypep(),
  75.     xasin(),xacos(),xatan();
  76.  
  77. /* functions specific to xldmem.c */
  78. LVAL xgc(),xexpand(),xalloc(),xmem();
  79. #ifdef SAVERESTORE
  80. LVAL xsave(),xrestore();
  81. #endif
  82.  
  83. /* include system dependant definitions */
  84. #include "osdefs.h"
  85.  
  86. /* SUBR/FSUBR indicator */
  87. #define S    SUBR
  88. #define F    FSUBR
  89.  
  90. /* forward declarations */
  91. LVAL xnotimp();
  92.  
  93. /* the function table */
  94. FUNDEF funtab[] = {
  95.  
  96.     /* read macro functions */
  97. {    NULL,                S, rmhash        }, /*   0 */
  98. {    NULL,                S, rmquote        }, /*   1 */
  99. {    NULL,                S, rmdquote        }, /*   2 */
  100. {    NULL,                S, rmbquote        }, /*   3 */
  101. {    NULL,                S, rmcomma        }, /*   4 */
  102. {    NULL,                S, rmlpar        }, /*   5 */
  103. {    NULL,                S, rmrpar        }, /*   6 */
  104. {    NULL,                S, rmsemi        }, /*   7 */
  105. {    NULL,                S, xnotimp        }, /*   8 */
  106. {    NULL,                S, xnotimp        }, /*   9 */
  107.  
  108.     /* methods */
  109. {    NULL,                S, clnew        }, /*  10 */
  110. {    NULL,                S, clisnew        }, /*  11 */
  111. {    NULL,                S, clanswer        }, /*  12 */
  112. {    NULL,                S, obisnew        }, /*  13 */
  113. {    NULL,                S, obclass        }, /*  14 */
  114. {    NULL,                S, obshow        }, /*  15 */
  115. {    NULL,                S, xnotimp        }, /*  16 */
  116. {    NULL,                S, xnotimp        }, /*  17 */
  117. {    NULL,                S, xnotimp        }, /*  18 */
  118. {    NULL,                S, xnotimp        }, /*  19 */
  119.  
  120.     /* evaluator functions */
  121. {    "EVAL",                S, xeval        }, /*  20 */
  122. {    "APPLY",            S, xapply        }, /*  21 */
  123. {    "FUNCALL",            S, xfuncall        }, /*  22 */
  124. {    "QUOTE",            F, xquote        }, /*  23 */
  125. {    "FUNCTION",            F, xfunction        }, /*  24 */
  126. {    "BACKQUOTE",            F, xbquote        }, /*  25 */
  127. {    "LAMBDA",            F, xlambda        }, /*  26 */
  128.  
  129.     /* symbol functions */
  130. {    "SET",                S, xset            }, /*  27 */
  131. {    "SETQ",                F, xsetq        }, /*  28 */
  132. {    "SETF",                F, xsetf        }, /*  29 */
  133. {    "DEFUN",            F, xdefun        }, /*  30 */
  134. {    "DEFMACRO",            F, xdefmacro        }, /*  31 */
  135. {    "GENSYM",            S, xgensym        }, /*  32 */
  136. {    "MAKE-SYMBOL",            S, xmakesymbol        }, /*  33 */
  137. {    "INTERN",             S, xintern        }, /*  34 */
  138. {    "SYMBOL-NAME",            S, xsymname        }, /*  35 */
  139. {    "SYMBOL-VALUE",            S, xsymvalue        }, /*  36 */
  140. {    "SYMBOL-PLIST",            S, xsymplist        }, /*  37 */
  141. {    "GET",                S, xget            }, /*  38 */
  142. {    "PUTPROP",             S, xputprop        }, /*  39 */
  143. {    "REMPROP",            S, xremprop        }, /*  40 */
  144. {    "HASH",                S, xhash        }, /*  41 */
  145.  
  146.     /* array functions */
  147. {    "MAKE-ARRAY",            S, xmkarray        }, /*  42 */
  148. {    "AREF",                S, xaref        }, /*  43 */
  149.             
  150.     /* list functions */
  151. {    "CAR",                S, xcar            }, /*  44 */
  152. {    "CDR",                S, xcdr            }, /*  45 */
  153.             
  154. {    "CAAR",                S, xcaar        }, /*  46 */
  155. {    "CADR",                S, xcadr        }, /*  47 */
  156. {    "CDAR",                S, xcdar        }, /*  48 */
  157. {    "CDDR",                S, xcddr        }, /*  49 */
  158.  
  159. {    "CAAAR",            S, xcaaar        }, /*  50 */
  160. {    "CAADR",            S, xcaadr        }, /*  51 */
  161. {    "CADAR",            S, xcadar        }, /*  52 */
  162. {    "CADDR",            S, xcaddr        }, /*  53 */
  163. {    "CDAAR",            S, xcdaar        }, /*  54 */
  164. {    "CDADR",            S, xcdadr        }, /*  55 */
  165. {    "CDDAR",            S, xcddar        }, /*  56 */
  166. {    "CDDDR",            S, xcdddr        }, /*  57 */
  167.  
  168. {    "CAAAAR",             S, xcaaaar        }, /*  58 */
  169. {    "CAAADR",            S, xcaaadr        }, /*  59 */
  170. {    "CAADAR",            S, xcaadar        }, /*  60 */
  171. {    "CAADDR",            S, xcaaddr        }, /*  61 */
  172. {    "CADAAR",             S, xcadaar        }, /*  62 */
  173. {    "CADADR",            S, xcadadr        }, /*  63 */
  174. {    "CADDAR",            S, xcaddar        }, /*  64 */
  175. {    "CADDDR",            S, xcadddr        }, /*  65 */
  176. {    "CDAAAR",            S, xcdaaar        }, /*  66 */
  177. {    "CDAADR",            S, xcdaadr        }, /*  67 */
  178. {    "CDADAR",            S, xcdadar        }, /*  68 */
  179. {    "CDADDR",            S, xcdaddr        }, /*  69 */
  180. {    "CDDAAR",            S, xcddaar        }, /*  70 */
  181. {    "CDDADR",            S, xcddadr        }, /*  71 */
  182. {    "CDDDAR",            S, xcdddar        }, /*  72 */
  183. {    "CDDDDR",            S, xcddddr        }, /*  73 */
  184.  
  185. {    "CONS",                S, xcons        }, /*  74 */
  186. {    "LIST",                S, xlist        }, /*  75 */
  187. {    "APPEND",            S, xappend        }, /*  76 */
  188. {    "REVERSE",            S, xreverse        }, /*  77 */
  189. {    "LAST",                S, xlast        }, /*  78 */
  190. {    "NTH",                S, xnth            }, /*  79 */
  191. {    "NTHCDR",            S, xnthcdr        }, /*  80 */
  192. {    "MEMBER",            S, xmember        }, /*  81 */
  193. {    "ASSOC",            S, xassoc        }, /*  82 */
  194. {    "SUBST",             S, xsubst        }, /*  83 */
  195. {    "SUBLIS",            S, xsublis        }, /*  84 */
  196. {    "REMOVE",            S, xremove        }, /*  85 */
  197. {    "LENGTH",            S, xlength        }, /*  86 */
  198. {    "MAPC",                S, xmapc        }, /*  87 */
  199. {    "MAPCAR",            S, xmapcar        }, /*  88 */
  200. {    "MAPL",                S, xmapl        }, /*  89 */
  201. {    "MAPLIST",            S, xmaplist        }, /*  90 */
  202.             
  203.     /* destructive list functions */
  204. {    "RPLACA",            S, xrplca        }, /*  91 */
  205. {    "RPLACD",            S, xrplcd        }, /*  92 */
  206. {    "NCONC",            S, xnconc        }, /*  93 */
  207. {    "DELETE",            S, xdelete        }, /*  94 */
  208.  
  209.     /* predicate functions */
  210. {    "ATOM",                S, xatom        }, /*  95 */
  211. {    "SYMBOLP",            S, xsymbolp        }, /*  96 */
  212. {    "NUMBERP",            S, xnumberp        }, /*  97 */
  213. {    "BOUNDP",            S, xboundp         }, /*  98 */
  214. {    "NULL",                S, xnull        }, /*  99 */
  215. {    "LISTP",            S, xlistp        }, /* 100 */
  216. {    "CONSP",            S, xconsp        }, /* 101 */
  217. {    "MINUSP",            S, xminusp         }, /* 102 */
  218. {    "ZEROP",            S, xzerop        }, /* 103 */
  219. {    "PLUSP",            S, xplusp        }, /* 104 */
  220. {    "EVENP",            S, xevenp        }, /* 105 */
  221. {    "ODDP",                S, xoddp        }, /* 106 */
  222. {    "EQ",                S, xeq            }, /* 107 */
  223. {    "EQL",                S, xeql            }, /* 108 */
  224. {    "EQUAL",            S, xequal        }, /* 109 */
  225.  
  226.     /* special forms */
  227. {    "COND",                F, xcond        }, /* 110 */
  228. {    "CASE",                F, xcase        }, /* 111 */
  229. {    "AND",                F, xand            }, /* 112 */
  230. {    "O